/*
 *************************************************************************
 * The contents of this file are subject to the Openbravo  Public  License
 * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
 * Version 1.1  with a permitted attribution clause; you may not  use this
 * file except in compliance with the License. You  may  obtain  a copy of
 * the License at http://www.openbravo.com/legal/license.html
 * Software distributed under the License  is  distributed  on  an "AS IS"
 * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
 * License for the specific  language  governing  rights  and  limitations
 * under the License.
 * The Original Code is Openbravo ERP.
 * The Initial Developer of the Original Code is Openbravo SLU
 * All portions are Copyright (C) 2008-2014 Openbravo SLU
 * All Rights Reserved.
 * Contributor(s):  ______________________________________.
 ************************************************************************
*/
package com.mes.manufacture.data;

import com.mes.data.EmesProcess;
import com.mes.data.EmesVendor;

import java.math.BigDecimal;
import java.util.Date;

import org.openbravo.base.structure.ActiveEnabled;
import org.openbravo.base.structure.BaseOBObject;
import org.openbravo.base.structure.ClientEnabled;
import org.openbravo.base.structure.OrganizationEnabled;
import org.openbravo.base.structure.Traceable;
import org.openbravo.model.ad.access.User;
import org.openbravo.model.ad.system.Client;
import org.openbravo.model.common.enterprise.Organization;
import org.openbravo.model.common.plm.Product;
import org.openbravo.model.common.uom.UOM;
/**
 * Entity class for entity Emeso_ManuOrder_Material (stored in table Emeso_ManuOrder_Material).
 *
 * NOTE: This class should not be instantiated directly. To instantiate this
 * class the {@link org.openbravo.base.provider.OBProvider} should be used.
 */
public class EmesoManuorderMaterial extends BaseOBObject implements Traceable, ClientEnabled, OrganizationEnabled, ActiveEnabled {
    private static final long serialVersionUID = 1L;
    public static final String TABLE_NAME = "Emeso_ManuOrder_Material";
    public static final String ENTITY_NAME = "Emeso_ManuOrder_Material";
    public static final String PROPERTY_ID = "id";
    public static final String PROPERTY_EMESOMANUORDER = "emesoManuorder";
    public static final String PROPERTY_PRODUCT = "product";
    public static final String PROPERTY_REPLACEPRODUCT = "replaceProduct";
    public static final String PROPERTY_UOMDESCRPTION = "uOMDescrption";
    public static final String PROPERTY_QTY = "qty";
    public static final String PROPERTY_FINISH = "finish";
    public static final String PROPERTY_DESCRIPTION = "description";
    public static final String PROPERTY_CLIENT = "client";
    public static final String PROPERTY_ORGANIZATION = "organization";
    public static final String PROPERTY_ACTIVE = "active";
    public static final String PROPERTY_CREATIONDATE = "creationDate";
    public static final String PROPERTY_CREATEDBY = "createdBy";
    public static final String PROPERTY_UPDATED = "updated";
    public static final String PROPERTY_UPDATEDBY = "updatedBy";
    public static final String PROPERTY_EMESVENDOR = "emesVendor";
    public static final String PROPERTY_WMSINSPECTMETHOD = "wMSInspectMethod";
    public static final String PROPERTY_WEIGHT = "weight";
    public static final String PROPERTY_UOM = "uom";
    public static final String PROPERTY_USER = "user";
    public static final String PROPERTY_RECIVERTIME = "reciverTime";
    public static final String PROPERTY_OLDPID = "oLDPid";
    public static final String PROPERTY_EMESPROCESS = "emesProcess";
    public static final String PROPERTY_ACTQTY = "actQty";
    public static final String PROPERTY__COMPUTEDCOLUMNS = "_computedColumns";


    // Computed columns properties, these properties cannot be directly accessed, they need
    // to be read through _commputedColumns proxy. They cannot be directly used in HQL, OBQuery
    // nor OBCriteria. 
    public static final String COMPUTED_COLUMN_STORAGEQTY = "storageQty";

    public EmesoManuorderMaterial() {
        setDefaultValue(PROPERTY_FINISH, false);
        setDefaultValue(PROPERTY_ACTIVE, true);
    }

    @Override
    public String getEntityName() {
        return ENTITY_NAME;
    }

    public String getId() {
        return (String) get(PROPERTY_ID);
    }

    public void setId(String id) {
        set(PROPERTY_ID, id);
    }

    public EmesoManuOrder getEmesoManuorder() {
        return (EmesoManuOrder) get(PROPERTY_EMESOMANUORDER);
    }

    public void setEmesoManuorder(EmesoManuOrder emesoManuorder) {
        set(PROPERTY_EMESOMANUORDER, emesoManuorder);
    }

    public Product getProduct() {
        return (Product) get(PROPERTY_PRODUCT);
    }

    public void setProduct(Product product) {
        set(PROPERTY_PRODUCT, product);
    }

    public String getReplaceProduct() {
        return (String) get(PROPERTY_REPLACEPRODUCT);
    }

    public void setReplaceProduct(String replaceProduct) {
        set(PROPERTY_REPLACEPRODUCT, replaceProduct);
    }

    public String getUOMDescrption() {
        return (String) get(PROPERTY_UOMDESCRPTION);
    }

    public void setUOMDescrption(String uOMDescrption) {
        set(PROPERTY_UOMDESCRPTION, uOMDescrption);
    }

    public BigDecimal getQty() {
        return (BigDecimal) get(PROPERTY_QTY);
    }

    public void setQty(BigDecimal qty) {
        set(PROPERTY_QTY, qty);
    }

    public Boolean isFinish() {
        return (Boolean) get(PROPERTY_FINISH);
    }

    public void setFinish(Boolean finish) {
        set(PROPERTY_FINISH, finish);
    }

    public String getDescription() {
        return (String) get(PROPERTY_DESCRIPTION);
    }

    public void setDescription(String description) {
        set(PROPERTY_DESCRIPTION, description);
    }

    public Client getClient() {
        return (Client) get(PROPERTY_CLIENT);
    }

    public void setClient(Client client) {
        set(PROPERTY_CLIENT, client);
    }

    public Organization getOrganization() {
        return (Organization) get(PROPERTY_ORGANIZATION);
    }

    public void setOrganization(Organization organization) {
        set(PROPERTY_ORGANIZATION, organization);
    }

    public Boolean isActive() {
        return (Boolean) get(PROPERTY_ACTIVE);
    }

    public void setActive(Boolean active) {
        set(PROPERTY_ACTIVE, active);
    }

    public Date getCreationDate() {
        return (Date) get(PROPERTY_CREATIONDATE);
    }

    public void setCreationDate(Date creationDate) {
        set(PROPERTY_CREATIONDATE, creationDate);
    }

    public User getCreatedBy() {
        return (User) get(PROPERTY_CREATEDBY);
    }

    public void setCreatedBy(User createdBy) {
        set(PROPERTY_CREATEDBY, createdBy);
    }

    public Date getUpdated() {
        return (Date) get(PROPERTY_UPDATED);
    }

    public void setUpdated(Date updated) {
        set(PROPERTY_UPDATED, updated);
    }

    public User getUpdatedBy() {
        return (User) get(PROPERTY_UPDATEDBY);
    }

    public void setUpdatedBy(User updatedBy) {
        set(PROPERTY_UPDATEDBY, updatedBy);
    }

    public EmesVendor getEmesVendor() {
        return (EmesVendor) get(PROPERTY_EMESVENDOR);
    }

    public void setEmesVendor(EmesVendor emesVendor) {
        set(PROPERTY_EMESVENDOR, emesVendor);
    }

    public String getWMSInspectMethod() {
        return (String) get(PROPERTY_WMSINSPECTMETHOD);
    }

    public void setWMSInspectMethod(String wMSInspectMethod) {
        set(PROPERTY_WMSINSPECTMETHOD, wMSInspectMethod);
    }

    public BigDecimal getWeight() {
        return (BigDecimal) get(PROPERTY_WEIGHT);
    }

    public void setWeight(BigDecimal weight) {
        set(PROPERTY_WEIGHT, weight);
    }

    public UOM getUom() {
        return (UOM) get(PROPERTY_UOM);
    }

    public void setUom(UOM uom) {
        set(PROPERTY_UOM, uom);
    }

    public User getUser() {
        return (User) get(PROPERTY_USER);
    }

    public void setUser(User user) {
        set(PROPERTY_USER, user);
    }

    public Date getReciverTime() {
        return (Date) get(PROPERTY_RECIVERTIME);
    }

    public void setReciverTime(Date reciverTime) {
        set(PROPERTY_RECIVERTIME, reciverTime);
    }

    public String getOLDPid() {
        return (String) get(PROPERTY_OLDPID);
    }

    public void setOLDPid(String oLDPid) {
        set(PROPERTY_OLDPID, oLDPid);
    }

    public EmesProcess getEmesProcess() {
        return (EmesProcess) get(PROPERTY_EMESPROCESS);
    }

    public void setEmesProcess(EmesProcess emesProcess) {
        set(PROPERTY_EMESPROCESS, emesProcess);
    }

    public BigDecimal getActQty() {
        return (BigDecimal) get(PROPERTY_ACTQTY);
    }

    public void setActQty(BigDecimal actQty) {
        set(PROPERTY_ACTQTY, actQty);
    }

    public BigDecimal getStorageQty() {
        return (BigDecimal) get(COMPUTED_COLUMN_STORAGEQTY);
    }

    public void setStorageQty(BigDecimal storageQty) {
        set(COMPUTED_COLUMN_STORAGEQTY, storageQty);
    }

    public EmesoManuorderMaterial_ComputedColumns get_computedColumns() {
        return (EmesoManuorderMaterial_ComputedColumns) get(PROPERTY__COMPUTEDCOLUMNS);
    }

    public void set_computedColumns(EmesoManuorderMaterial_ComputedColumns _computedColumns) {
        set(PROPERTY__COMPUTEDCOLUMNS, _computedColumns);
    }


    @Override
    public Object get(String propName) {
      if (COMPUTED_COLUMN_STORAGEQTY.equals(propName)) {
        if (get_computedColumns() == null) {
          return null;
        }
        return get_computedColumns().getStorageQty();
      }
    
      return super.get(propName);
    }
}
